#pragma once
#include "Utility\Map.h"

class DxVertexShader;
class DxPixelShader;

class DxShaderManager
{
public:
	DxShaderManager(void);
	~DxShaderManager(void);

	DxVertexShader* GetVertexShader(char* szName);
	DxVertexShader* GetVertexShader(u32 uHash);

	DxPixelShader* GetPixelShader(char* szName);
	DxPixelShader* GetPixelShader(u32 uHash);

	DxVertexShader* GetDefaultVS() { return m_pDefaultVS; }
	DxPixelShader* GetDefaultPS() { return m_pDefaultPS; }

	static DxShaderManager* GetInstance();

protected:
	DxVertexShader*	m_pDefaultVS;
	DxPixelShader* m_pDefaultPS;

	Map<u32, DxVertexShader*> m_mVertexShaders;
	Map<u32, DxPixelShader*> m_mPixelShaders;

	static DxShaderManager* sm_pShaderManager;
};

